package com.szxx.constant;

import com.szxx.suit.AbstractSuitType;

/**
 * 斗地主牌型 <br>
 *
 * @author Ambrose
 */
public enum DdzCardType {
	
	/** 无效牌型 */
    INVALID(-1),
    /** 单牌牌型 */
    SINGLE(1), 
    /** 对牌牌型 */
    PAIR(2), 
    /** 三张牌型 */
    THREE(3), 
    /** 单连牌型 */
    STRAIGHT(4), 
    /** 对连牌型 */
    PAIR_STRAIGHT(5), 
    /** 三连牌型 */
    THREE_STRAIGHT(6), 
    /** 三带一单 */
    THREE_TAKE_SINGLE(7), 
    /** 三带一单 飞机牌型 */
    THREE_TAKE_SINGLE_PLUS(8), 
    /** 三带一对 */
    THREE_TAKE_PAIR(9), 
    /** 三带一对 飞机带翅膀牌型 */
    THREE_TAKE_PAIR_PLUS(10), 
    /** 四带两单牌型 */
    FOUR_TAKE_SINGLE(11), 
    /** 四带两对牌型 */
    FOUR_TAKE_PAIR(12), 
    /** 软炸弹牌型 */
    SOFT_BOMB(13, 1), 
    /** 炸弹牌型 */
    BOMB(14, SOFT_BOMB.getWeight() << 2), 
    /** 超级炸弹牌型，大于四张的炸弹，天地癞子才有 */
    SUPER_BOMB(15, BOMB.getWeight() << 2), 
    /** 火箭牌型 */
    MISSILE(16, SUPER_BOMB.getWeight() << 2); 
	
	/** 牌型int */
	private final int type;
	/** 牌型权值，用于确定牌型大小，对子不能管单牌，炸弹可以 */
	private final int weight;
	
	private DdzCardType(int type) {
		this.type = type;
		this.weight = AbstractSuitType.DEFAULT_TYPE_WEIGHT;
	}
	
	private DdzCardType(int type, int weight) {
		this.type = type;
		this.weight = weight;
	}

	public int getType() {
		return type;
	}

	public int getWeight() {
		return weight;
	}
	
}
